export interface IGetDetailReq {
  /**
   * 运单编号
   */
  waybillNo: string
}

export interface IGetWaybillAttachDetailReq {
  fileType?: number
  /**
   * 运单编号
   */
  sourceId: string
  sourceType?: number
  type: number
}

export interface IWaybillDetailRes {
  /**
   * BL
   */
  bl?: string
  /**
   * 集货仓ID
   */
  consolidationWarehouseId?: number
  /**
   * 下单时间，运单创建时间（YYYY-MM-DD HH:mm:ss）
   */
  createAt?: string
  /**
   * 更新时间，运单更新时间（YYYY-MM-DD HH:mm:ss）
   */
  updateAt?: string
  /**
   * 创建人
   */
  createBy?: string
  /**
   * 送达时段
   */
  deliveryTime?: string
  /**
   * 预计送达日期（MM-DD）
   */
  edd?: string
  /**
   * ISA
   */
  isa?: string
  /**
   * 尾程承运商名称
   */
  lastMileCarrier?: string
  /**
   * 尾程运输方式: 1.快递 2.卡车 3.Amazon Freight
   */
  lastMileTransportType?: number
  /**
   * 尾程运单号
   */
  lastMileWaybillNo?: string
  /**
   * 物流渠道编码
   */
  logisticsChannelCode?: string
  /**
   * 物流渠道服务商
   */
  logisticsChannelMerchantServers?: string
  /**
   * 物流渠道名称
   */
  logisticsChannelName?: string
  /**
   * 物流渠道服务等级,1.Standard 2.Fast 3.Expedited
   */
  logisticsChannelServiceLevel?: number
  /**
   * 物流渠道服务最长时效(天)
   */
  logisticsChannelServiceTransitMax?: number
  /**
   * 物流渠道服务最短时效(天)
   */
  logisticsChannelServiceTransitMin?: number
  /**
   * 物流渠道转单号
   */
  logisticsChannelTrackingNumber?: string
  /**
   * 物流渠道运输方式,1.OCEAN 2.AIR 3.GROUND_TRUCK 4.GROUND_TRAIN
   */
  logisticsChannelTransportType?: number
  /**
   * 物流产品内置名称
   */
  logisticsProductInlineName?: string
  /**
   * 物流产品名称
   */
  logisticsProductName?: string
  /**
   * 物流产品服务等级,1.Standard 2.Fast 3.Expedited
   */
  logisticsProductServiceLevel?: number
  /**
   * 物流产品服务最长时效(天)
   */
  logisticsProductServiceTransitMax?: number
  /**
   * 物流产品服务最短时效(天)
   */
  logisticsProductServiceTransitMin?: number
  /**
   * 物流产品运输方式,1.OCEAN 2.AIR 3.GROUND_TRUCK 4.GROUND_TRAIN
   */
  logisticsProductTransportType?: number
  /**
   * 送达时段，当前FBA预约送达时段（第N周 MM-DD ~ MM-DD）
   */
  scheduledDeliveryTime?: string
  /**
   * 已预约送达时段
   */
  scheduledDeliveryTimeSlot?: string
  /**
   * 发货日期，运单出库日期（MM-DD）
   */
  shipmentDate?: string
  /**
   * 签收日期（MM-DD）
   */
  signingTime?: string
  /**
   * 客户
   */
  customer?: string
  /**
   * 相关人员信息
   */
  staffInfoList?: StaffV2ODTO[]
  /**
   * 中转仓ID
   */
  transitWarehouseId?: number
  /**
   * 更新人
   */
  updateBy?: string
  /**
   * 运单号
   */
  waybillNo?: string
  /**
   * 最新运单状态(主状态): 11.待处理 12.待发货 13.待离港 14.运输中 15.待提取 16.中转中 17.派送中 18.已签收 19.已取消
   */
  waybillStatus?: number
  /**
   * 运单状态(主状态)更新时间，含历史状态，key为主状态，value为状态对应时间
   */
  waybillStatusUpdateTime?: { [key: string]: string }
}

/**
 * 人员信息
 */
export interface StaffV2ODTO {
  /**
   * 人员 1.业务人员 2.港后跟单 3.港前操作 4.港后操作
   */
  staffType?: number
  user?: User
  [property: string]: any
}

/**
 * 员工
 */
export interface User {
  /**
   * 启用
   */
  active?: boolean
  /**
   * 头像
   */
  avatar?: string
  createdDate?: number
  /**
   * 部门ID
   */
  departmentId?: number
  /**
   * 英文姓名
   */
  englishName?: string
  /**
   * 性别
   */
  gender?: Gender
  id?: number
  loginDate?: number
  /**
   * 中文姓名
   */
  name?: string
  /**
   * 工号
   */
  num?: string
  /**
   * 密码
   */
  password?: string
  /**
   * 手机号
   */
  phone?: string
  /**
   * 职位
   */
  position?: string
  /**
   * 角色ID
   */
  roleId?: number
  /**
   * 账号
   */
  username?: string
  [property: string]: any
}

/**
 * 性别
 */
export enum Gender {
  Man = 'MAN',
  Unknown = 'UNKNOWN',
  Woman = 'WOMAN',
}

/** 备注信息 全部可选 全部联合null */
export interface ICargoCommentInfo {
  /** 关联的揽货单号 */
  cargoNo?: string | null
  /** 留言内容 */
  comment?: string | null
  /** 图片 */
  picUrl?: string | null
  /** 留言时间 */
  commentTime?: string | null
  /** 留言id */
  id?: string | null
  /** 用户头像URL */
  userAvatar?: string | null
  /** 用户名称 */
  username?: string | null
  /** 用户账号 */
  userId?: string | null
}

export interface ISetLogisticsProductReq {
  /**
   * 物流产品服务等级,1.Standard 2.Fast 3.Expedited
   */
  logisticsProductServiceLevel?: number
  /**
   * 物流产品服务最长时效(天)
   */
  logisticsProductServiceTransitMax?: number
  /**
   * 物流产品服务最短时效(天)
   */
  logisticsProductServiceTransitMin?: number
  /**
   * 物流产品运输方式,1.OCEAN 2.AIR 3.GROUND_TRUCK 4.GROUND_TRAIN
   */
  logisticsProductTransportType?: number
  /**
   * '运单号'
   */
  waybillNo: string
}

export interface ISetLogisticsChannelReq {
  /**
   * 物流渠道服务商
   */
  logisticsChannelMerchantServers?: string
  /**
   * 物流渠道服务等级,1.Standard 2.Fast 3.Expedited
   */
  logisticsChannelServiceLevel?: number
  /**
   * 物流渠道服务最长时效(天)
   */
  logisticsChannelServiceTransitMax?: number
  /**
   * 物流渠道服务最短时效(天)
   */
  logisticsChannelServiceTransitMin?: number
  /**
   * 物流渠道转单号
   */
  logisticsChannelTrackingNumber?: string
  /**
   * 物流渠道运输方式,1.OCEAN 2.AIR 3.GROUND_TRUCK 4.GROUND_TRAIN
   */
  logisticsChannelTransportType?: number
  /**
   * '运单号'
   */
  waybillNo: string
}

export interface ISetFirstLegInformationReq {
  /**
   * 承运商名称
   */
  carrier?: string
  /**
   * 集装箱编号,柜号(海运可选)
   */
  containerNumber?: string
  /**
   * 起运地点ID(港口/机场/车站)
   */
  departureLocationId?: number
  /**
   * 起运地点(港口/机场/车站/卡车)
   */
  departureLocationName?: string
  /**
   * 目的地点ID(港口/机场/车站)
   */
  destinationLocationId?: number
  /**
   * 目的地点ID(港口/机场/车站/卡车)
   */
  destinationLocationName?: string
  /**
   * 预计到港/降落/到达日期(格式: yyyy-MM-dd)
   */
  eta?: Date
  /**
   * 预计离港/起飞/发车日期(格式: yyyy-MM-dd)
   */
  etd?: Date
  /**
   * 航班号(空运时必填)
   */
  flightNumber?: string
  /**
   * 车次/卡车编号(铁路或卡车运输时必填)
   */
  trainTruckNumber?: string
  /**
   * 运输方式: 1.OCEAN 2.AIR 3.GROUND_TRUCK 4.GROUND_TRAIN
   */
  transportType: number
  /**
   * 船名(海运时必填)
   */
  vesselName?: string
  /**
   * 航次(海运时必填)
   */
  voyageNumber?: string
  /**
   * 运单号
   */
  waybillNo: string
}

export interface ISetLastLegInformationReq {
  /**
   * 尾程承运商名称
   */
  lastMileCarrier: string
  /**
   * 尾程运输方式,1.快递 2.卡车 3.Amazon Freight
   */
  lastMileTransportType?: number
  /**
   * 尾程运单号
   */
  lastMileWaybillNo: string
  /**
   * '运单号'
   */
  waybillNo: string
}

/** 头程信息 */
export interface IFirstLegInformationRes {
  /**
   * 承运商名称
   */
  carrier: string
  /**
   * 集装箱编号(海运可选)
   */
  containerNumber?: string
  /**
   * 起运地点(格式: 名称+代码)
   */
  departureLocation: string
  /**
   * 目的地点(格式: 名称+代码)
   */
  destinationLocation: string
  /**
   * 预计到港/降落/到达日期(格式: yyyy-MM-dd)
   */
  eta?: string
  /**
   * 预计离港/起飞/发车日期(格式: yyyy-MM-dd)
   */
  etd?: string
  /**
   * 航班号(空运时必填)
   */
  flightNumber?: string
  /**
   * 车次/卡车编号
   */
  trainTruckNumber?: string
  /**
   * 运输方式: 1.OCEAN 2.AIR 3.GROUND_TRUCK 4.GROUND_TRAIN
   */
  transportType: number
  /**
   * 船名(海运时必填)
   */
  vesselName?: string
  /**
   * 航次(海运时必填)
   */
  voyageNumber?: string
  /**
   * 起运地点ID(港口/机场/车站)
   */
  departureLocationId?: number
  /**
   * 起运地点(港口/机场/车站/卡车)
   */
  departureLocationName?: string
  /**
   * 目的地点ID(港口/机场/车站)
   */
  destinationLocationId?: number
  /**
   * 目的地点ID(港口/机场/车站/卡车)
   */
  destinationLocationName?: string
}

export interface IWaybillPublishPathRes {
  /**
   * 事件发生时间
   */
  eventTime?: string
  /**
   * 地点类型: 1-始发地 2-集货仓 3-起运港 4-目的港 5-中转仓 6-目的地
   */
  locationType?: number
  /**
   * 消息类型: 1-Information 2-Notification 3-Alert
   */
  messageType?: number
  /**
   * 事件备注信息
   */
  note?: string
  /**
   * 发布ID
   */
  publishId?: number
  /**
   * ShipTrack同步状态 1.不同步 2.同步成功 3.同步失败)
   */
  shipTrackStatus?: number
  /**
   * ShipTrack同步时间
   */
  syncAt?: string
  /**
   * 中文描述
   */
  templateCn?: string
  /**
   * 英文描述
   */
  templateEn?: string
  /**
   * 更新时间
   */
  updateAt?: string
  /**
   * 更新人姓名
   */
  updateBy?: string
  /**
   * 客户可见: 0-否 1-是
   */
  visibleFlag?: number
}

export interface IWaybillTransferWarehouseInformationRes {
  /**
   * 集货仓/中转仓列表
   */
  warehouseODTOS?: WarehouseODTO[]
}

export interface IGetWarehouseListReq {
  /**
   * 仓库类型，1.集货仓 2.中转仓
   */
  warehouseType?: number
}

export interface WarehouseODTO {
  /**
   * 详细地址
   */
  address?: string
  /**
   * 联系邮箱
   */
  email?: string
  /**
   * 联系人姓名
   */
  person?: string
  /**
   * 联系电话
   */
  phone?: string
  /**
   * 仓库唯一标识
   */
  warehouseId?: string
  /**
   * 仓库名称
   */
  warehouseName?: string
  /**
   * 仓库类型: 1-集货仓 2-中转仓
   */
  warehouseType?: number
}

export interface IUploadWaybillAttach {
  /**
   * 文件列表
   */
  attachListParams: AttachListParam[]
}

/**
 * 文件列表
 */
export interface AttachListParam {
  /**
   * 备注
   */
  comment?: string
  /**
   * 文件名
   */
  fileName: string
  /**
   * 文件类型: 1-装箱单 2-报关文件 3-清关文件 4-标签文件 5-签收文件(POD) 6-其他文件 7-ISA 8-BL
   */
  fileType: number
  /**
   * 文件地址
   */
  fileUrl: string
  /**
   * 运单号
   */
  waybillNo: string
}

export interface ISetTransferWarehouseReq {
  /**
   * 集货仓/中转仓ID
   */
  warehouseId?: string
  /**
   * 仓库类型，1.集货仓 2.中转仓
   */
  warehouseType?: number
  /**
   * '运单号'
   */
  waybillNo?: string
}

export interface IAddNoteReq {
  /**
   * '备注信息
   */
  note?: string
  /**
   * 运单编号
   */
  waybillNo: string
  /**
   * 文件URL
   */
  fileUrl?: string
}

export interface IGetNoteReq {
  /**
   * '备注时间'
   */
  createAt?: string
  /**
   * 备注信息
   */
  note?: string
  user?: User
  /**
   * 文件URL
   */
  fileUrl?: string
}

export interface IGetBoxNumberMapInformationReq {
  /**
   * 物流公司
   */
  carrier?: string
  /**
   * FBA箱号
   */
  fbaBoxNumber?: string
  /**
   * 最新路由
   */
  latestRouting?: string
  /**
   * 母单号
   */
  masterWaybillNo?: string
  /**
   * 物流跟踪单号
   */
  trackingNumber?: string
}

export interface IWarehouseListRes {
  /**
   * 集货仓/中转仓详细地址
   */
  address?: string
  /**
   * '联系邮箱'
   */
  email?: string
  /**
   * '联系人姓名'
   */
  person?: string
  /**
   * '联系电话'
   */
  phone?: string
  /**
   * 集货仓/中转仓ID
   */
  warehouseId?: string
  /**
   * 集货仓/中转仓名称
   */
  warehouseName?: string
  /**
   * 仓库类型，1.集货仓 2.中转仓
   */
  warehouseType?: number
}

export interface ISetIsaBlReq {
  /**
   * BL
   */
  bl?: string
  /**
   * ISA
   */
  isa?: string
  /**
   * 运单编号
   */
  waybillNo: string
}

export interface IWaybillStatusOverviewRes {
  /**
   * 状态总览列表
   */
  statusODTOList?: StatusODTO[]
}

export interface StatusODTO {
  /**
   * 已预约送达时段，只有预约状态才有此值
   */
  scheduledDeliveryTimeSlot?: string
  /**
   * 状态组下的具体状态主状态-11.待处理 12.待发货 13.待离港 14.运输中 15.待提取 16.中转中 17.派送中 18.已签收 19.已取消; 报关-21.待审核
   * 22.待申报 23.申报中 24.查验中 25.已放行 26.已退单 27.已取消; 清关-31.待审核 32.待申报 33.申报中 34.待支付关税 35.查验中 36.已放行
   * 37.已退运 38.已取消; 预约-41.待处理 42.待预约 43.待确认 44.已确认 45.已签收 46.已回传 47.已拒收 48.已取消; 保险-51.待确认
   * 52.待投保 53.已投保 54.已拒绝 55.已取消; 异常-61.待分配 62.调查中 63.处理中 64.已解决 65.已关闭 66.已取消
   */
  status?: number
  /**
   * 状态组 1.主状态 2.报关 3.清关 4.预约 5.保险 6.异常
   */
  statusGroup?: number
  /**
   * 更新时间
   */
  updateAt?: string
}

export interface IOrderProductBoxInfoRes {
  /**
   * 总箱数
   */
  boxNum?: number
  /**
   * 总体积
   */
  volume?: string
  /**
   * 总重量
   */
  weight?: string
}

export interface IUploadWaybillAttachReq {
  /**
   * 文件列表
   */
  attachListParams: AttachListParam[]
}

export interface AttachListParam {
  /**
   * 文件名
   */
  fileName: string
  /**
   * 文件类型：1.装箱单 2.报关文件 3.清关文件 4.标签文件 5.签收文件(POD) 6.其他文件
   */
  fileType: number
  /**
   * 文件地址
   */
  fileUrl: string
  /**
   * 运单号
   */
  waybillNo: string
}

export interface IUploadWaybillAttachRes {
  /**
   * 上传文件返回信息列表
   */
  attachListParams?: AttachListResultParam[]
}

export interface AttachListResultParam {
  /**
   * 备注
   */
  comment?: string
  /**
   * 文件名
   */
  fileName: string
  /**
   * 文件类型: 1-装箱单 2-报关文件 3-清关文件 4-标签文件 5-签收文件(POD) 6-其他文件 7-ISA 8-BL
   */
  fileType: number
  /**
   * 文件地址
   */
  fileUrl: string
  /**
   * 运单号
   */
  waybillNo: string
}

export interface ISetPublishEventReq {
  /**
   * 认证信息
   */
  auth?: string
  /**
   * 城市
   */
  city?: string
  /**
   * 国家代码(ISO 2-letter)
   */
  countryCode?: string
  /**
   * 当前预计送达日期
   */
  currentEdd?: string
  /**
   * 当前预计送达对应时区
   */
  currentEddZone?: string
  /**
   * 轨迹模板ID
   */
  eventTemplateId?: number
  /**
   * 事件发生时间，格式：yyyy-MM-dd HH:mm:ss
   */
  eventTime?: string
  /**
   * 事件发生时间对应时区
   */
  eventTimeZone?: string
  /**
   * 下次更新日期/预计送达日期对应时区
   */
  nextUpdateAndEddZone?: string
  /**
   * 下次状态更新时间，格式：yyyy-MM-dd
   */
  nextUpdateTime?: string
  /**
   * 操作备注
   */
  note?: string
  /**
   * 邮政编码
   */
  postalCode?: string
  /**
   * 州/省
   */
  stateProvince?: string
  /**
   * street1
   */
  street1?: string
  /**
   * street2
   */
  street2?: string
  /**
   * 更新后的预计送达日期，格式：yyyy-MM-dd
   */
  updateEdd?: string
  /**
   * 更新后的预计送达日期对应时区
   */
  updateEddZone?: string
  /**
   * 运单号
   */
  waybillNo: string
}

export interface ISetBatchPublishEventReq {
  /**
   * 轨迹发布列表
   */
  publishPathIDTOS?: ISetPublishEventReq[]
}

export interface IWaybillAttachDetailRes {
  /**
   * 文件列表返回结果信息
   */
  attachListResultParams?: AttachListResultParam[]
}

/**
 * 文件列表返回结果信息
 */
export interface AttachListResultParam {
  /**
   * 删除标记：0.未删除 1.已删除
   */
  deleteFlag?: number
  /**
   * 文件ID
   */
  fileId?: number
  /**
   * 文件名称
   */
  fileName: string
  /**
   * 文件类型：1.装箱单 2.报关文件 3.清关文件 4.标签文件 5.签收文件(POD) 6.其他文件 7.ISA文件 8.BL文件
   */
  fileType: number
  /**
   * 文件URL
   */
  fileUrl: string
  /**
   * 来源
   */
  sourceId?: string
  /**
   * 系统：1.OMS 2.TMS 3.其它
   */
  sourceType?: number
  /**
   * 上传时间
   */
  uploadAt?: Date
  /**
   * 上传人
   */
  uploadBy?: string
}

/** 获取运单始发地地址 */
export interface IWaybillOriginAddressRes {
  /**
   * 地址ID
   */
  addressId?: number
  /**
   * 地址类型 1.海运港口 2.空运机场 3.铁路站点 4.集货仓 5.中转仓
   */
  addressType?: number
  /**
   * 中文名
   */
  chineseName?: string
  /**
   * 城市
   */
  city?: string
  /**
   * 代码
   */
  code?: string
  /**
   * 联系人，始发地/目的地才有此值
   */
  contacts?: string
  /**
   * 国家
   */
  country?: string
  /**
   * 国家2字码
   */
  countryCode?: string
  /**
   * 联系邮箱，始发地/目的地才有此值
   */
  email?: string
  /**
   * 英文名
   */
  englishName?: string
  /**
   * 是否常用：0-否，1-是
   */
  isCommon?: number
  /**
   * 联系电话，始发地/目的地才有此值
   */
  phone?: string
  /**
   * 邮编
   */
  postalCode?: string
  /**
   * 省洲
   */
  stateProvince?: string
  /**
   * 详细地址1
   */
  street1?: string
  /**
   * 详细地址2
   */
  street2?: string
}

/** 获取运单目的地地址 */
export interface IWaybillDestinationAddressRes {
  /**
   * 地址ID
   */
  addressId?: number
  /**
   * 地址类型 1.海运港口 2.空运机场 3.铁路站点 4.集货仓 5.中转仓
   */
  addressType?: number
  /**
   * 中文名
   */
  chineseName?: string
  /**
   * 城市
   */
  city?: string
  /**
   * 代码
   */
  code?: string
  /**
   * 联系人，始发地/目的地才有此值
   */
  contacts?: string
  /**
   * 国家
   */
  country?: string
  /**
   * 国家2字码
   */
  countryCode?: string
  /**
   * 联系邮箱，始发地/目的地才有此值
   */
  email?: string
  /**
   * 英文名
   */
  englishName?: string
  /**
   * 是否常用：0-否，1-是
   */
  isCommon?: number
  /**
   * 联系电话，始发地/目的地才有此值
   */
  phone?: string
  /**
   * 邮编
   */
  postalCode?: string
  /**
   * 省洲
   */
  stateProvince?: string
  /**
   * 详细地址1
   */
  street1?: string
  /**
   * 详细地址2
   */
  street2?: string
}

export interface IAddressListReq {
  /** 地址类型 1.海运港口 2.空运机场 3.铁路站点 4.集货仓 5.中转仓 */
  addressType: number
}

/**
 * 地址详情
 */
export interface IAddressListRes {
  /**
   * 地址ID
   */
  addressId?: number
  /**
   * 地址类型 1.海运港口 2.空运机场 3.铁路站点 4.集货仓 5.中转仓
   */
  addressType?: number
  /**
   * 中文名
   */
  chineseName?: string
  /**
   * 城市
   */
  city?: string
  /**
   * 代码
   */
  code?: string
  /**
   * 联系人，始发地/目的地才有此值
   */
  contacts?: string
  /**
   * 国家
   */
  country?: string
  /**
   * 国家2字码
   */
  countryCode?: string
  /**
   * 联系邮箱，始发地/目的地才有此值
   */
  email?: string
  /**
   * 英文名
   */
  englishName?: string
  /**
   * 是否常用：0-否，1-是
   */
  isCommon?: number
  /**
   * 联系电话，始发地/目的地才有此值
   */
  phone?: string
  /**
   * 邮编
   */
  postalCode?: string
  /**
   * 省洲
   */
  stateProvince?: string
  /**
   * 详细地址1
   */
  street1?: string
  /**
   * 详细地址2
   */
  street2?: string
}
